package cn.elegent.tx.context;
import com.alibaba.fastjson.JSON;
import lombok.Data;

import java.io.IOException;
import java.util.Map;

@Data
public class Snapshot {

    private Map<String,Object> data;


    public Snapshot(Map<String, Object> data) {
        this.data = data;
    }


    /**
     * 返回对象快照
     * @param key
     * @param c
     * @return
     * @param <T>
     */
    public <T> T findData(String key,Class<T> c){
        try {
            T t = JSON.parseObject(  JSON.toJSONString(data.get(key)) ,c );
            return t;
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 返回基本数据类型 快照
     * @param key
     * @return
     * @param <T>
     */
    public <T> T findData(String key){
        T t = (T) data.get(key);
        return t;
    }

    /**
     * 获取参数
     * @return
     */
    public Map<String,Object> getData(){
        return this.data;
    }

}